lv1= lv2= type=
editor.md 当前使用;based on marked;已经停止维护
marked core base
在 core 基础上,提供 样式 同步滚动 界面 快捷键 等额外功能,语法高亮用的CodeMirror
E:\uninote\mynote\basic\web\link\take -- old
E:\uninote\mynote-front\static\editor.md
〖E:\projects\editor.md〗
http://a.md.my/ -- 包括 CommonMark 测试
http://a.md.my/examples/index.html -- test
online:
https://github.com/pandao/editor.md
https://pandao.github.io/editor.md/
index:
https://pandao.github.io/editor.md/examples/index.html
full examples:
https://pandao.github.io/editor.md/examples/full.html
mynote-front base on(copy from): 63786e671e2c1a1fd2be25b54a8910cd3bbc7c0a of E:\uninote\mynote-front\static\editor.md
其中的一个fork
https://gitlab.com/cobalt-os-team/MeditorJS
todo:
--editor:
markdown todo
lv1= lv2= type=
markdown test expmt 格式测试
uninote、掘金
E:\projects\github-test
E:\projects\github-test\lc
E:\uninote\mynote-site-docs\lc
E:\projects\gogs-test
editor.md local:
http://a.md.my/examples/index.html
markedjs local:
http://a.mdcore.my/docs/demo/index.html
phpleague commonMark & HyperDown(思否)
http://a.md.my/my/index.html
js commonmark:
https://github.com/markdown-it/markdown-it
parsedown
https://parsedown.org/demo
parse markdown
E:\uninote\mynote-front\static\editor.md\src\editormd.js
/**
* 解析和保存Markdown代码
* Parse & Saving Markdown source code
*
* @returns {editormd} 返回editormd的实例对象
*/
save : function() {
表情 emoji
https://www.webfx.com/tools/emoji-cheat-sheet/
掘金禁用、github gogs 启用
"\ud83e\uddda" emoji 表示方式

E:\projects\editor.md\examples\emoji.html
http://a.md.my/examples/emoji.html
可以配置 emoji 的 hosts
code ana
这里加载 marked:
editormd.loadScript(loadPath + "marked.min", function() {
editormd.$marked = marked;
/**
* 解析和保存Markdown代码
* Parse & Saving Markdown source code
*
* @returns {editormd} 返回editormd的实例对象
*/
save : function() {
var _this = this;
var state = this.state;
var settings = this.settings;
if (timer === null && !(!settings.watch && state.preview))
{
return this;
}
var cm = this.cm;
var cmValue = cm.getValue();
var previewContainer = this.previewContainer;
if (settings.mode !== "gfm" && settings.mode !== "markdown")
{
this.markdownTextarea.val(cmValue);
return this;
}
var marked = editormd.$marked;
var markdownToC = this.markdownToC = [];
var rendererOptions = this.markedRendererOptions = {
toc : settings.toc,
tocm : settings.tocm,
tocStartLevel : settings.tocStartLevel,
pageBreak : settings.pageBreak,
taskList : settings.taskList,
emoji : settings.emoji,
tex : settings.tex,
atLink : settings.atLink, // for @link
emailLink : settings.emailLink, // for mail address auto link
flowChart : settings.flowChart,
sequenceDiagram : settings.sequenceDiagram,
previewCodeHighlight : settings.previewCodeHighlight,
};
var markedOptions = this.markedOptions = {
renderer : editormd.markedRenderer(markdownToC, rendererOptions),
gfm : true,
tables : true,
breaks : true,
pedantic : false,
sanitize : (settings.htmlDecode) ? false : true, // 关闭忽略HTML标签,即开启识别HTML标签,默认为false
smartLists : true,
smartypants : true
};
marked.setOptions(markedOptions);
var newMarkdownDoc = editormd.$marked(cmValue, markedOptions);
lv1= lv2= type=
marked core base
上万的start,fork 2k+ 还在继续开发

仅提供 md 转 html,样式不提供;太依赖正则,很难修改。
〖E:\projects\marked〗
https://github.com/chjj/marked
local:
http://a.mdcore.my/docs/demo/index.html

查看 lexer 结果:

online test demo
https://marked.js.org/demo/
basic
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>Marked in the b
rowser</title>
</head>
<body>
<div id="content"></div>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script>
document.getElementById('content').innerHTML =
marked('# Marked in browser\n\nRendered by **marked**.');
</script>
</body>
</html>
heading
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>Marked in the browser</title>
</head>
<body>
<div id="content"></div>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script>
var content = '# Marked in browser\n\n### Install from an Archive File\nRendered by **marked**.';
const renderer = new marked.Renderer()
let index = -1
renderer.heading = function (text, level) {
return `<h${level} id="titleAnchor-${index++}">${text}</h${level}>`
}
document.getElementById('content').innerHTML = marked(content, { renderer: renderer });
</script>
</body>
</html>
如何实现markdown文章标题导航 双向
https://www.u3xyz.com/detail/32#titleAnchor-7

code ana
语法分析在 worker.js 中:
Lexer.prototype.token = function(src, top) {
case 'parse':
var startTime = new Date();
var lexed = marked.lexer(e.data.markdown, e.data.options);
var lexedList = [];
for (var i = 0; i < lexed.length; i++) {
demo.html
官方demo的解析在worker中,不便于调试:http://a.mdcore.my/docs/demo/index.html
可以用此简单版 demo.html
commits
使用本地 js,因此选择版本功能失效
CommonMark compliance
https://github.com/markedjs/marked/issues/1202
PR #1160 looks to run Marked against the CommonMark spec test cases: http://spec.commonmark.org/0.28/spec.json
So far the results show that we are roughly 60% spec-compliant.